// async requestSceneData(url: string) {
//   try {
//     const resp = await fetch(url, { method: 'GET' });
//     if (resp.status !== 200) {
//       this.message.warning('未找到场景数据');
//     }
//     const data: SceneJson = await resp.json();
//     const _list = await fetch('/assets/three/models/_list.json'); // 获取id对应表
//     this.modelNameArray = await _list.json();
//     for await (const model of data.models) {
//       const modelName = idToName(model.modelId, this.modelNameArray);

//       if (!modelName) {
//         this.loadFailureModelMap[model.modelId] = model.name;
//         continue; // modelName不存在，跳过当前循环。
//       }

//       const deviceStatus = await readDeviceStatus(modelName);

//       if (deviceStatus) {
//         this.deviceStatus.push(deviceStatus);
//       }
//       if (this.deviceStatus && model.name.includes('机柜')) {
//         const newCabinet = {
//           cabinetName: model.name,
//           position: model.position,
//         };
//         // 将数据添加到数组中
//         this.statefulCabinetCode.push(newCabinet);
//       }
//       if (model.visible == undefined) model.visible = true;

//       const nodeLevel1 = await loadModel2(
//         modelName,
//         model.code,
//         this.modelGroup,
//         model.position,
//         model.rotation,
//         model.scale,
//         model.visible
//       );
//       nodeLevel1.userData['name'] = model.name;
//       // 将模型数据添加到全局数据结构中
//       box3.setFromObject(nodeLevel1);
//       const distance = new THREE.Vector3();
//       box3.getCenter(distance);
//       const center = distance.sub(nodeLevel1.position);

//       const modelData = {
//         modelName: model.name,
//         code: model.code,
//         position: model.position,
//         rotation: model.rotation,
//         center: center,
//         model: nodeLevel1,
//         children: [],
//       };

//       if (model.name.includes('机柜')) {
//         this.globalDataStructure.cabinets.push(modelData);
//       }
//       if (this.initialCardPosition[nodeLevel1.id] == null) {
//         this.initialCardPosition[nodeLevel1.id] = nodeLevel1.position.clone();
//       }

//       if (modelName == 'House') {
//         positiveCulling(nodeLevel1);
//         nodeLevel1.layers.enable(2);
//       }

//       if (modelName == 'diaoding') {
//         this.roof = nodeLevel1;
//         this.roof.position.y = 2000;
//       }
//       if (model.children.length > 0) {
//         this.childLevelLoading(
//           model.children,
//           nodeLevel1,
//           model.name,
//           modelData
//         ).then(() => {});
//       }
//     }

//     // 隐藏加载进度条
//     this.sceneLoaded = true;

//     this.statefulCabinetCode.forEach((item, index) => {
//       this.closeTheDoor(item.cabinetName, this.modelGroup);
//     }); // 关闭机柜门

//     this.createCabinetText();

//     // 有未加载出的模型提示
//     if (Object.keys(this.loadFailureModelMap).length > 0) {
//       const message = Object.values(this.loadFailureModelMap).join(', ');
//       this.createTipsMessage('error', message + '模型加载失败');
//     }

//     this.cabinetAlarmMark(); // 为每个机柜创建告警包围盒

//     this.app.renderer.domElement.addEventListener(
//       'pointermove',
//       this.onPointerMoveBind
//     );
//     console.log('globalDataStructure', this.globalDataStructure);
//     setTimeout(() => {
//       alarmBoardLabel(
//         this.alarmCard,
//         this.globalDataStructure.boardCardMap,
//         this.originalModelColorMap
//       );
//     }, 3000);

//     this.globalDataStructure.cabinets.map((object) => {
//       this.cabinets.push(object.modelName);
//     });
//     this.cabinets = [...this.cabinets];
//     this.changeDetectorRef.markForCheck();
//     this.changeDetectorRef.detectChanges();
//   } catch (error) {
//     console.error(error);
//   }
// }

// // 递归加载子节点
// async childLevelLoading(
//   parentNodeChildren: ModelInfo[],
//   parentNode: THREE.Object3D,
//   parentName: string,
//   parentModelData?: ModelData
// ) {
//   let indexs = 0;
//   for await (const childModel of parentNodeChildren) {
//     if (childModel.visible == undefined) childModel.visible = true;

//     const childName = idToName(childModel.modelId, this.modelNameArray);

//     if (!childName) {
//       this.loadFailureModelMap[childModel.modelId] = childModel.name;
//       continue; // childName不存在，跳过当前循环。
//     }

//     const childrenModel1 = await loadModel2(
//       childName,
//       childModel.code,
//       parentNode,
//       childModel.position,
//       childModel.rotation,
//       childModel.scale,
//       childModel.visible,
//       parentName
//     );

//     if (parentModelData) {
//       const index =
//         this.globalDataStructure.cabinets.indexOf(parentModelData);
//       this.globalDataStructure.cabinets[index].children[childrenModel1.id] = {
//         code: childModel.code,
//         position: childModel.position,
//         rotation: childModel.rotation,
//       };
//     }

//     // 记录板卡初始位置
//     if (this.initialCardPosition[childrenModel1.id] == null) {
//       this.initialCardPosition[childrenModel1.id] =
//         childrenModel1.position.clone();
//     }

//     // TODO:写到加载函数中,避免每加载一个板卡就要执行一次这个逻辑。
//     // 隐藏板卡灯珠
//     const userData = childrenModel1.userData as ModelUserData;

//     if (userData.code) {
//       this.globalDataStructure.boardCardMap[userData.code] = {
//         model: childrenModel1,
//         owningCabinet: userData.parentCode,
//       };
//     }

//     childrenModel1.traverse((node) => {
//       if (node.userData['name'] == 'L') {
//         node.visible = false;
//       }
//     });

//     if (childModel.children.length > 0) {
//       this.childLevelLoading(
//         childModel.children,
//         childrenModel1,
//         childrenModel1.userData['code']
//       );
//     }
//   }
// }